//document.write("<script language=javascript src='commmon.js'><\/script>");
//basePath
var queryCommmArgsInfoUrl = basePath + "index/queryCommmArgsInfo"

function test() {

}

$(function() {
    layui.use([ 'layer', 'form' ], function() {
	console.log("加载 layer , form 模块 ...");
	var layer = layui.layer, form = layui.form;
	//	test();
	var pid = getQueryString("pid");
	var ieType = $("input[name='args']:checked").val();
	queryCommmArgsInfo(pid,ieType);
	
	$(".layui-form-item input[name='multistep'] + .layui-form-checkbox").click(function(){//点击多层级结构按钮
	    var multistep = isEmpty($("#e2").text());
	    var isSwitch = $(".layui-form-item input[name='switch'] + .layui-form-onswitch").hasClass("layui-form-onswitch");//編輯按鈕是否选中
	    if(multistep){//添加
	       layer.confirm('是否添加【父元素】节点', {
	         skin: 'layui-layer-molv' //样式类名
	         ,closeBtn: 0
	         ,title: "添加节点"
	         ,btn:["YES","NO"]
	         ,yes: function(index,layero){
			$("#e1").after(getIePreCodeThHtml(multistep));
			$("input[name='ieCode']").parent().after(getIePreCodeHtml(multistep,''));
			   if(!isSwitch){//如果内有选中 编辑去按钮那么给 新增的这个节点 加上readonly属性
			       $("input[name='iePreCode']").attr("readonly","true");
			       $("input[name='iePreCode']").addClass("back-input");
			       $("input[name='iePreCode']").parent().addClass("back-input");
			   }
			   layer.msg('添加成功，添加前请点亮上方编辑按钮', {anim: 4,icon:1});
		  },btn2 : function(index,layero){
		      $(".layui-form-item input[name='multistep'] + .layui-form-checkbox").removeClass("layui-form-checked");
		  }
	       });
	   }else{//删除
	       layer.confirm('是否删除【父元素】节点，保存后生效', {
		         skin: 'layui-layer-molv' //样式类名
		         ,closeBtn: 0
		         ,title: "删除节点"
		         ,btn:["YES","NO"]
		         ,yes: function(index,layero){
		             $("#e2").remove();
		             $("input[name='iePreCode']").parent().remove();
		             $(".layui-form-item input[name='multistep'] + .layui-form-checkbox").removeClass("layui-form-checked");
		             layer.msg('删除成功', {anim: 4,icon:1});
			  },btn2 : function(index,layero){
			      $(".layui-form-item input[name='multistep'] + .layui-form-checkbox").addClass("layui-form-checked");
			  }
		       }); 
	   }
	    
	});
	
	$(".layui-form-item .layui-form-radio").click(function(){//点击 选择出入参  按钮
	    var radioVal = $(this).prev().val();
	    queryCommmArgsInfo(pid, radioVal);
	    
	});
	
	$(".layui-form-item input[name='switch'] + .layui-form-switch").click(function(){//选择   启用编辑按钮   按钮
	    var isSwitch = $(this).hasClass("layui-form-onswitch");//
	    if(isSwitch){
		$(this).removeClass("layui-form-onswitch");
		$('.table tbody input').addClass("back-input");
		$('.table tbody td').addClass("back-input");
		$('.table tbody input').attr("readonly","true");
	    }else{
		$(this).addClass("layui-form-onswitch");
		$('.table tbody input').removeClass("back-input");
		$('.table tbody td').removeClass("back-input");
		$('.table tbody input').removeAttr("readonly");
	    }
	})
		
	$(".table tbody").on({
	    mouseover: function() { 
		$(this).css("color","#ff6800"); 
	    }, 
	    mouseout: function() { 
		$(this).css("color","#4d6256"); 
	    } 
	}, "span");
	
	$(".addtr i").mouseover(function (){
	    $(this).css("color","#ff6800");
	    $(this).css("font-weight","bold");
	}).mouseout(function (){
	    $(this).css("color","#d13620")
	});
	
	$(".table tbody").on("click", ".del-icon", function (){
	    // true 说明已经点亮，可以删除，   
	    var isSwitch = $('.layui-form-switch').hasClass("layui-form-onswitch");
	    if(!isSwitch){
		layer.alert('该接口元素的数据被锁定，请先点亮上方编辑按钮 进行解锁 ！', {
		  icon: 6,
		  skin: 'layer-ext-moon' //该皮肤由layer.seaning.com友情扩展。关于皮肤的扩展规则，去这里查阅
		})
		return ;
	    }
	    var ieCode = $(this).parent().parent().find("input[name='ieCode']").val();
	    var trObj = $(this).parent().parent();
	    if(isEmpty(ieCode)){
		trObj.remove();
		layer.msg('移除成功', {time:2000,anim:1});
	    }else{
		layer.confirm("点击确定删除元素【"+ieCode+"】", {
		         skin: 'layui-layer-molv' //样式类名
		         ,closeBtn: 0
		         ,title: "删除整行元素信息"
		         ,btn:["YES","NO"]
		         ,yes: function(index,layero){
		             trObj.remove()
		             layer.msg('删除成功', {time:2000, anim: 1});
			  }
		       }); 
	    }
	});
	
//	$(".table tbody").on("click", ".edit-icon", function (){//该功能 不兼容  数据结构的添加
//	    //仅仅对这一行进行解锁
//	    var trObj = $(this).parent().parent();//获得行 dom
//	    // false 说明已经未点亮，不可以操作，   
//	    var isSwitch = $('.layui-form-switch').hasClass("layui-form-onswitch");
//	    if(!isSwitch){
//		trObj.find("td,input").removeClass("back-input");
//	    }
//	});
	
	$(".addtr i").click(function(){
	    var multistep = isNotEmpty($("#e2").text());
	    $(".table tbody").append(covLiHtmlForEmpty(multistep, 1));
	    var h = $(document).height()-$(window).height();
	    $(document).scrollTop(h);
	});
	
	$(".btn .save").click(function(){
	    //这里要谈一个窗，需要输入 用户的 本次修改的信息
	    
	    var trArray = new Array();//定义数组对象
	    var param = {}; // 定义 行对象
	    var radioVal = $(".layui-form-item .layui-form-radio").prev().val();//出入参
	    $(".table tbody tr").each(function(index,element){
		alert($(this).find("input[name='ieCode']").html());
		var ieCode = $(this).find("input[name='ieCode']").val(); 
		var iePreCode = $(this).find("input[name='iePreCode']").val(); 
		var ieConstraint = $(this).find("input[name='ieConstraint']").val(); 
		var len = $(this).find("input[name='len']").val(); 	
		var ieObj = $(this).find("input[name='ieObj']").val(); 
		var ieDesc = $(this).find("input[name='ieDesc']").val(); 
		var ieValues = $(this).find("input[name='ieValues']").val(); 
		if(isEmpty(ieCode)){
		    $(this).find("input[name='ieCode']").val("999injnj");
		    return ;
		}
	    });
	    
	});
	$(".btn .clear").click(function(){
	    // false 说明已经未点亮，不可以操作，   
	    var isSwitch = $('.layui-form-switch').hasClass("layui-form-onswitch");
	    if(!isSwitch){
		layer.alert('该接口元素的数据被锁定，请先点亮上方编辑按钮 进行解锁 ！', {
			  icon: 6,
			  skin: 'layer-ext-moon' //该皮肤由layer.seaning.com友情扩展。关于皮肤的扩展规则，去这里查阅
			})
		return ;
	    }
	    layer.confirm('是否清除所有元素节点信息，保存后生效', {
		         skin: 'layui-layer-molv' //样式类名
		         ,closeBtn: 0
		         ,title: "清除所有元素"
		         ,btn:["YES","NO"]
		         ,yes: function(index,layero){
		             $(".table tbody td input").val("");
		             layer.msg('清除全部成功', {time:2000, anim: 1});
			  }
		       }); 
	});
	
    });
})

function queryCommmArgsInfo(pid,ieType) {
    var params = {
	"pid" : pid,
	"ieType" : ieType
    };
    var reName = "0"==ieType?"【入参】":"1"==ieType?"出参":"NULL" ;
    ajax(queryCommmArgsInfoUrl, params, true).done(function(data, status) {
	if (data.result == "0") {
	    var multistep = data.multistep ;
	    if (multistep == true) {//如果是多层级结构，则默认选中 框，
		$('.layui-form-checkbox').addClass("layui-form-checked");
	    }else{
		$("#e1").next().html();
	    }
	    $(".table thead").html(covThHtml(multistep));//这里吧头部信息追加到表格中
	    var trHtml = "";
	    var reArgs = data.reArgs;
	    //这里开始追加 各种 li 元素
	    //1. 如果 reqArgs  没有值，那么， 默认打开  启用编辑 按钮，并添加两个空的行
	    //2. 如果 有值， 那么追加到tbaody中
	    if (isEmpty(reArgs)) {
		layer.msg("该项目没有公共"+reName+"，需要的话请在下面添加，请谨慎添加，谢谢",{time:5000});
		$('.layui-form-switch').addClass("layui-form-onswitch");
		trHtml = covLiHtmlForEmpty(multistep,8);
		$(".table tbody").html(trHtml);//这里把主体信息追加到表格中
	    }else{
		$('.layui-form-switch').removeClass("layui-form-onswitch");
		if(reArgs.length>0){
		    for (var i = 0; i < reArgs.length; i++) {
			var b = reArgs[i];
			trHtml += covLiHtml(b.ieCode, b.iePreCode, b.ieConstraint, b.len, b.ieObj, b.ieDesc, b.ieValues, multistep)
		    }
		}
		$(".table tbody").html(trHtml);//这里把主体信息追加到表格中
		$('.table tbody input').attr("readonly","true");
		$('.table tbody td,.table tbody input').addClass("back-input");
		
	    }
	} else {
	    layer.msg(data.msg, {
		time : 5000,
		icon : 5
	    });
	}
    })
}


function covLiHtmlForEmpty(multistep,len){
   var tr = '';
    for (var i = 0; i < len; i++) {
	tr += covLiHtml('','','','','','','',multistep);
    }
    return tr ;
}

function getIePreCodeHtml(multistep,iePreCode) {
    var iePreHtml = ''
    if (multistep) {
	iePreHtml = '<td><input type="text" name="iePreCode" Placeholder="请输入父元素名称" value="'
		+ iePreCode + '"></td>';
    }
    return iePreHtml ;
}

function getIePreCodeThHtml(multistep) {
    var thpreThHtml = ''
    if (multistep) {
	thpreThHtml = '<th id="e2">父元素名称</th>'
    }
    return thpreThHtml;
}


function covLiHtml(ieCode, iePreCode, ieConstraint, len, ieObj, ieDesc,
	    ieValues, multistep) {
	var liHtml = '<tr>' + '<td><input type="text" Placeholder="请填写元素名称" name="ieCode" value="'
		+ ieCode + '"></td>' + getIePreCodeHtml(multistep,iePreCode)
		+ '<td><input type="text" name="ieConstraint" Placeholder="请填写约束信息" value="'
		+ ieConstraint + '"></td>'
		+ '<td><input type="text" name="len" Placeholder="请填写参数长度" value="' + len + '"></td>'
		+ '<td><input type="text" name="ieObj" Placeholder="请填写参数的数据类型" value="' + ieObj
		+ '"></td>' + '<td><input type="text" name="ieDesc" Placeholder="请填写参数描述" value="'
		+ ieDesc + '"></td>'
		+ '<td><input type="text" name="ieValues" Placeholder="请填写该参数取值说明" value="'+ ieValues +'"></td>'
		+ '<td><span class="del-icon"><i class="layui-icon" style="font-size:x-large;">&#xe640;</i></span>'
		+ '<span class="edit-icon"><i class="layui-icon" style="font-size:x-large;">&#xe642;</i></span></td>'
		+ '</tr>';
	return liHtml;    
	    
}

function covThHtml(multistep){
     var thHtml = '<tr>' 
 	+ '<th id="e1">元素名称</th>'
 	+ getIePreCodeThHtml(multistep)
 	+ '<th id=e3">约束</th>'
 	+ '<th id="e4">长度</th>'
 	+ '<th id="e5">数据类型</th>'
 	+ '<th id="e6">描述</th>'
 	+ '<th id="e7">取值说明</th>'
 	+ '<th id="e8"><i class="layui-icon" style="font-size:30px;">&#xe614;</i></th>'
 	+ '</tr>' ;
     return thHtml ;
}

